#ifndef __CBB_CAMERA_TYPE_H__
#define __CBB_CAMERA_TYPE_H__

#include "cbb_type.h"
#include "cbb_camera_comm.h"

#if defined (__cplusplus) || defined (c_plusplus)
extern "C" {
#endif

#define V4L2_PIXEL_FORMAT_MAX_NUM 255

//!摄像头句柄
typedef void* CameraHandle;


typedef struct {
	hd_u32_t width; //!宽
	hd_u32_t height; //!高
	hd_u32_t format;//!摄像头格式 ,参考 
	hd_u32_t capabilities;//!设备能力
	hd_u32_t device_caps;//!设备功能特性
	hd_u32_t sizeimage;//!一帧数据的大小
	char camera_version[16];//!摄像头版本
}CbbCameraInfo_t;//! 来自v4l2-ctl --all

typedef struct {
	hd_u32_t width;
	hd_u32_t height;
	hd_u32_t format;//!摄像头格式 ,参考 标准v4l2框架的videodev2.h头文件定义的数据格式 V4L2_PIX_FMT_XXXX
	hd_u16_t fps;//帧率
	/* data */
}CbbCameraConf_t;//!摄像头配置

typedef struct {
	union {
		hd_u32_t pixel_format[V4L2_PIXEL_FORMAT_MAX_NUM];//! 对应动作：CBB_CAMERA_ACT_QUE_FMT,支持的格式以无符号整型数组返回
		CbbCameraInfo_t info_s;//!对应动作:CBB_CAMERA_ACT_QUE_ALL
		CbbCameraConf_t conf_s;//!对应动作:CBB_CAMERA_ACT_SET_CONF
		CbbCameraStatE_t action;//!对应动作:CBB_CAMERA_ACT_CTL_CAP
	}camera_ctrl_u;
}CbbCameraCtrlDev_t;


typedef enum {
	CBB_CAMERA_ACT_QUE_FMT = 0,//!查询摄像头支持的格式，返回无符号32整型。含义参考 CbbCameraFormatsE_t
	CBB_CAMERA_ACT_QUE_ALL = 1,//!查询摄像头所有信息，返回 CbbCameraInfo_t
	CBB_CAMERA_ACT_SET_CONF = 2,//!配置摄像头,输入 CbbCameraConf_t
	CBB_CAMERA_ACT_CTL_CAP = 3,//!开始/停止视频流传输，输入,CbbCameraStatE_t
}CbbCameraActionE_t;//!摄像头操作定义

#if defined (__cplusplus) || defined (c_plusplus)
}
#endif

#endif // __CBB_CAMERA_TYPE_H

